<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>/home/http/DsCache/trunk/DsTemplate/DsTemplate.class.php.html</title>
<meta name="Generator" content="Vim/7.2">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#000000" text="#ffffff"><font face="monospace">
<font color="#ffff00">&nbsp;&nbsp;1 </font><font color="#ff40ff">&lt;?php</font><br>
<font color="#ffff00">&nbsp;&nbsp;2 </font><font color="#00ffff">/**</font><br>
<font color="#ffff00">&nbsp;&nbsp;3 </font><font color="#00ffff">&nbsp;* DsTemplate 模板类&nbsp;&nbsp;</font><br>
<font color="#ffff00">&nbsp;&nbsp;4 </font><font color="#00ffff">&nbsp;*</font><br>
<font color="#ffff00">&nbsp;&nbsp;5 </font><font color="#00ffff">&nbsp;* @filesource DsTemplate.class.php</font><br>
<font color="#ffff00">&nbsp;&nbsp;6 </font><font color="#00ffff">&nbsp;* @package DsTemplate</font><br>
<font color="#ffff00">&nbsp;&nbsp;7 </font><font color="#00ffff">&nbsp;* @subpackage </font><br>
<font color="#ffff00">&nbsp;&nbsp;8 </font><font color="#00ffff">&nbsp;* @version $id: 0.2, utf8, Fri Jan&nbsp;&nbsp;1 15:30:11 CST 2010</font><br>
<font color="#ffff00">&nbsp;&nbsp;9 </font><font color="#00ffff">&nbsp;* @author LD King &lt;kldscs[at]gmail.com&gt;</font><br>
<font color="#ffff00">&nbsp;10 </font><font color="#00ffff">&nbsp;* @copyright Copyleft (D.) 2007 - 2009 MiFunny China Inc.</font><br>
<font color="#ffff00">&nbsp;11 </font><font color="#00ffff">&nbsp;* @link <a href="http://mifunny.info/">http://mifunny.info/</a></font><br>
<font color="#ffff00">&nbsp;12 </font><font color="#00ffff">&nbsp;* @see example: testView.php </font><br>
<font color="#ffff00">&nbsp;13 </font><font color="#00ffff">&nbsp;*/</font><br>
<font color="#ffff00">&nbsp;14 </font><font color="#00ff00">class</font>&nbsp;DsTemplate<font color="#00ff00">{</font><br>
<font color="#ffff00">&nbsp;15 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ff00">private</font>&nbsp;<font color="#00ff00">static</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">_instance</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;16 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">//private $_tp = null; //模板根目录</font><br>
<font color="#ffff00">&nbsp;17 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">//private $_content = null; //最后显示的内容</font><br>
<font color="#ffff00">&nbsp;18 </font><br>
<font color="#ffff00">&nbsp;19 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ffff">/**</font><br>
<font color="#ffff00">&nbsp;20 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * 变量数组</font><br>
<font color="#ffff00">&nbsp;21 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;TEMPLATEPATH 模板根目录</font><br>
<font color="#ffff00">&nbsp;22 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; *</font><br>
<font color="#ffff00">&nbsp;23 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; * @var array</font><br>
<font color="#ffff00">&nbsp;24 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp; */</font><br>
<font color="#ffff00">&nbsp;25 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ff00">private</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">_vars</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ff00">array(</font><br>
<font color="#ffff00">&nbsp;26 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'<font color="#ffff00">TEMPLATEPATH</font>'&nbsp;<font color="#00ff00">=&gt;</font>&nbsp;<font color="#00ff00">null</font>,<br>
<font color="#ffff00">&nbsp;27 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ff00">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;28 </font><br>
<font color="#ffff00">&nbsp;29 </font>&nbsp;&nbsp; <font color="#00ffff">/**</font><br>
<font color="#ffff00">&nbsp;30 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* 初始化 模板引擎</font><br>
<font color="#ffff00">&nbsp;31 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*</font><br>
<font color="#ffff00">&nbsp;32 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @param string 模板根目录 </font><br>
<font color="#ffff00">&nbsp;33 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*/</font><br>
<font color="#ffff00">&nbsp;34 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;<font color="#ff40ff">__construct</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template_path</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ff00">null</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;35 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#00ffff">is_string</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template_path</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;36 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars<font color="#ff40ff">[</font>'<font color="#ffff00">TEMPLATEPATH</font>'<font color="#ff40ff">]</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">template_path</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;37 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;38 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#00ff00">self</font><font color="#ff40ff">::</font><font color="#ffff00">$</font><font color="#00ffff">_instance</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;39 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;40 </font><br>
<font color="#ffff00">&nbsp;41 </font>&nbsp;&nbsp; <font color="#00ffff">/**</font><br>
<font color="#ffff00">&nbsp;42 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* 重写魔法方法 __set 和 __get</font><br>
<font color="#ffff00">&nbsp;43 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*</font><br>
<font color="#ffff00">&nbsp;44 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @param string $key</font><br>
<font color="#ffff00">&nbsp;45 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @param mixed $value</font><br>
<font color="#ffff00">&nbsp;46 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*/</font>&nbsp;<br>
<font color="#ffff00">&nbsp;47 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;<font color="#ff40ff">__set</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">key</font>, <font color="#ffff00">$</font><font color="#00ffff">value</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;48 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars<font color="#ff40ff">[</font><font color="#ffff00">$</font><font color="#00ffff">key</font><font color="#ff40ff">]</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">value</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;49 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;50 </font><br>
<font color="#ffff00">&nbsp;51 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;<font color="#ff40ff">__get</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">key</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;52 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">return</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars<font color="#ff40ff">[</font><font color="#ffff00">$</font><font color="#00ffff">key</font><font color="#ff40ff">]</font><font color="#ffff00">;</font><br>
<font color="#ffff00">&nbsp;53 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;54 </font><br>
<font color="#ffff00">&nbsp;55 </font>&nbsp;&nbsp; <font color="#00ffff">/**</font><br>
<font color="#ffff00">&nbsp;56 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* 获得最后的显示信息</font><br>
<font color="#ffff00">&nbsp;57 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*</font><br>
<font color="#ffff00">&nbsp;58 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @param string $template 模板文件全名</font><br>
<font color="#ffff00">&nbsp;59 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*/</font><br>
<font color="#ffff00">&nbsp;60 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;fetch<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;61 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">//目录分隔符</font><br>
<font color="#ffff00">&nbsp;62 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">!</font><font color="#00ffff">defined</font><font color="#ff40ff">(</font>'<font color="#ffff00">DS</font>'<font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font>&nbsp;<font color="#00ffff">define</font><font color="#ff40ff">(</font>'<font color="#ffff00">DS</font>', <font color="#ffff00">DIRECTORY_SEPARATOR</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;63 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">//模板根目录</font><br>
<font color="#ffff00">&nbsp;64 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">!</font><font color="#00ffff">defined</font><font color="#ff40ff">(</font>'<font color="#ffff00">TP</font>'<font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font>&nbsp;<font color="#00ffff">define</font><font color="#ff40ff">(</font>'<font color="#ffff00">TP</font>', <font color="#ff40ff">empty</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars<font color="#ff40ff">[</font>'<font color="#ffff00">TEMPLATEPATH</font>'<font color="#ff40ff">])</font>&nbsp;<font color="#ffff00">?</font>&nbsp;''&nbsp;<font color="#ffff00">:</font>&nbsp;<font color="#00ffff">rtrim</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars<font color="#ff40ff">[</font>'<font color="#ffff00">TEMPLATEPATH</font>'<font color="#ff40ff">]</font>, '<font color="#ff40ff">\\</font><font color="#ffff00">/</font>'<font color="#ff40ff">)</font><font color="#ffff00">.</font>DS <font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;65 </font><br>
<font color="#ffff00">&nbsp;66 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">$</font><font color="#00ffff">template</font>&nbsp;<font color="#ffff00">=</font>&nbsp;TP<font color="#ffff00">.</font><font color="#00ffff">str_replace</font><font color="#ff40ff">(</font>'<font color="#ffff00">/</font>', DS,&nbsp;&nbsp;<font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;67 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#00ffff">is_file</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;68 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">unset</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars<font color="#ff40ff">[</font>'<font color="#ffff00">TEMPLATEPATH</font>'<font color="#ff40ff">]</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;69 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">extract</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>_vars, <font color="#ffff00">EXTR_OVERWRITE</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;70 </font><br>
<font color="#ffff00">&nbsp;71 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">$</font><font color="#00ffff">errno</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">error_reporting</font><font color="#ff40ff">()</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;72 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">error_reporting</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">errno</font>&nbsp;<font color="#ffff00">&amp;</font>&nbsp;<font color="#ffff00">~</font><font color="#ffff00">E_NOTICE</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;73 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">ob_start</font><font color="#ff40ff">()</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;74 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">include</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;75 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">$</font><font color="#00ffff">content</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ffff">ob_get_contents</font><font color="#ff40ff">()</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;76 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">ob_end_clean</font><font color="#ff40ff">()</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;77 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">error_reporting</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">errno</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;78 </font><br>
<font color="#ffff00">&nbsp;79 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">return</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">content</font><font color="#ffff00">;</font><br>
<font color="#ffff00">&nbsp;80 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">}</font><font color="#ffff00">else</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;81 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">throw</font>&nbsp;<font color="#ff40ff">new</font>&nbsp;<font color="#00ffff">LogicException</font><font color="#ff40ff">(</font>'<font color="#ffff00">(</font>'<font color="#ffff00">.</font><font color="#ffff00">__CLASS__</font><font color="#ffff00">.</font>'<font color="#ffff00">-&gt;</font>'<font color="#ffff00">.</font><font color="#ffff00">__METHOD__</font><font color="#ffff00">.</font>'<font color="#ffff00">)</font>'<font color="#ffff00">.</font>'<font color="#ffff00">Error: </font>'<font color="#ffff00">.</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ffff00">.</font>'<font color="#ffff00">&nbsp;is not a file !</font>'<font color="#ff40ff">)</font><font color="#ffff00">;</font><br>
<font color="#ffff00">&nbsp;82 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">return</font>&nbsp;<font color="#00ff00">false</font><font color="#ffff00">;</font><br>
<font color="#ffff00">&nbsp;83 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;84 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;85 </font><br>
<font color="#ffff00">&nbsp;86 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;display<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;87 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">echo</font>&nbsp;<font color="#ffff00">$</font><font color="#ffff00">this</font><font color="#00ff00">-&gt;</font>fetch<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">&nbsp;88 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;89 </font><br>
<font color="#ffff00">&nbsp;90 </font>&nbsp;&nbsp; <font color="#00ffff">/**</font><br>
<font color="#ffff00">&nbsp;91 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* 获得静态视图对像</font><br>
<font color="#ffff00">&nbsp;92 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*</font><br>
<font color="#ffff00">&nbsp;93 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @return object DsTemplate</font><br>
<font color="#ffff00">&nbsp;94 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*/</font><br>
<font color="#ffff00">&nbsp;95 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#00ff00">static</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;getInstance<font color="#ff40ff">()</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;96 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">!</font><font color="#ff40ff">(</font><font color="#00ff00">self</font><font color="#ff40ff">::</font><font color="#ffff00">$</font><font color="#00ffff">_instance</font>&nbsp;<font color="#ffff00">instanceof</font>&nbsp;<font color="#00ff00">self</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">&nbsp;97 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">new</font>&nbsp;<font color="#00ff00">self</font><font color="#ff40ff">()</font><font color="#ff40ff">;</font>&nbsp;&nbsp;<font color="#00ffff">// self::$_instance = new self();</font><br>
<font color="#ffff00">&nbsp;98 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">&nbsp;99 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">return</font>&nbsp;<font color="#00ff00">self</font><font color="#ff40ff">::</font><font color="#ffff00">$</font><font color="#00ffff">_instance</font><font color="#ffff00">;</font><br>
<font color="#ffff00">100 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">101 </font><br>
<font color="#ffff00">102 </font>&nbsp;&nbsp; <font color="#00ffff">/**</font><br>
<font color="#ffff00">103 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* 静态方法, 显示视图</font><br>
<font color="#ffff00">104 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*</font><br>
<font color="#ffff00">105 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @param string $template 模板文件</font><br>
<font color="#ffff00">106 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;* @param array $vars 变量数组</font><br>
<font color="#ffff00">107 </font><font color="#00ffff">&nbsp;&nbsp;&nbsp;&nbsp;*/</font><br>
<font color="#ffff00">108 </font>&nbsp;&nbsp; <font color="#00ff00">public</font>&nbsp;<font color="#00ff00">static</font>&nbsp;<font color="#ff40ff">function</font>&nbsp;show<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font>, <font color="#00ff00">array</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">vars</font><font color="#ffff00">=</font><font color="#00ff00">null</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">109 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">$</font><font color="#00ffff">view</font>&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#00ff00">self</font><font color="#ff40ff">::</font>getInstance<font color="#ff40ff">()</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">110 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#00ffff">//$view-&gt;TEMPLATEPATH = $template_path;</font><br>
<font color="#ffff00">111 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">if</font><font color="#ff40ff">(</font>&nbsp;<font color="#ffff00">!</font><font color="#ff40ff">empty</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">vars</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">112 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">$</font><font color="#00ffff">view</font><font color="#00ff00">-&gt;</font>_vars&nbsp;<font color="#ffff00">=</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">vars</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">113 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ff40ff">}</font>&nbsp;&nbsp;<br>
<font color="#ffff00">114 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#ffff00">$</font><font color="#00ffff">view</font><font color="#00ff00">-&gt;</font>display<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">template</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font>&nbsp;<br>
<font color="#ffff00">115 </font>&nbsp;&nbsp; <font color="#ff40ff">}</font><br>
<font color="#ffff00">116 </font><br>
<font color="#ffff00">117 </font><font color="#00ff00">}</font><font color="#00ffff">//END class DsTemplate</font><br>
<font color="#ffff00">118 </font><br>
<font color="#ffff00">119 </font><font color="#00ffff">/**</font><br>
<font color="#ffff00">120 </font><font color="#00ffff">&nbsp;* 显示变量</font><br>
<font color="#ffff00">121 </font><font color="#00ffff">&nbsp;*</font><br>
<font color="#ffff00">122 </font><font color="#00ffff">&nbsp;* @param mixed $value 需显示的变量, 字符串 or 数字</font><br>
<font color="#ffff00">123 </font><font color="#00ffff">&nbsp;* @param bool $escape 是否转义</font><br>
<font color="#ffff00">124 </font><font color="#00ffff">&nbsp;*/</font><br>
<font color="#ffff00">125 </font><font color="#ff40ff">function</font>&nbsp;_e<font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">value</font>, <font color="#ffff00">$</font><font color="#00ffff">escape</font><font color="#ffff00">=</font><font color="#00ff00">true</font><font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">126 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ffff00">if</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">escape</font>&nbsp;<font color="#ffff00">and</font>&nbsp;<font color="#00ffff">is_string</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">value</font><font color="#ff40ff">)</font>&nbsp;<font color="#ff40ff">)</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">127 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">echo</font>&nbsp;<font color="#00ffff">htmlspecialchars</font><font color="#ff40ff">(</font><font color="#ffff00">$</font><font color="#00ffff">value</font>, <font color="#ffff00">ENT_QUOTES</font><font color="#ff40ff">)</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">128 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><font color="#ffff00">else</font><font color="#ff40ff">{</font><br>
<font color="#ffff00">129 </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">echo</font>&nbsp;<font color="#ffff00">$</font><font color="#00ffff">value</font><font color="#ff40ff">;</font><br>
<font color="#ffff00">130 </font>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#ff40ff">}</font><br>
<font color="#ffff00">131 </font><font color="#ff40ff">}</font><font color="#00ffff">//END func _e </font><br>
<font color="#ffff00">132 </font><font color="#ff40ff">?&gt;</font><br>
</font></body>
</html>
